package cn.daomeng.firebird.core.log;

import cn.daomeng.firebird.core.exception.FirebirdException;
import cn.daomeng.firebird.core.exception.ExceptionStackTraceBuilder;
import cn.daomeng.firebird.core.utils.DateUtils;

/**
 * 异常返回信息处理类
 * @author wf.shu
 * @since 2019-03-06 14：15
 */
public class LogHandler {
    /**
     * 通过CalorieException生成固定格式的异常信息
     *
     * @author  WeiFei.Shu
     * @since   2019年03月06日 下午16:33:32
     * @param e calorieException
     */
	public static LogInfo hander(FirebirdException e) {
        return buidLogInfo(e);
	}

    public static LogInfo hander(String message ,FirebirdException e) {
        LogInfo calorieLogInfo = buidLogInfo(e);
        calorieLogInfo.setInfoTitle(message);
        return calorieLogInfo;
    }

    public static LogInfo hander(String message) {
        LogInfo calorieLogInfo = new LogInfo();
        calorieLogInfo.setAccDate(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        calorieLogInfo.setInfoTitle(message);
        return calorieLogInfo;
    }

    /**
     * 根据异常类生成LogInfo
     *
     * @author  wf.shu
     * @since   ${DATE} ${TIME}
     * @version 1.0.0.0
     * @param e CalorieException 异常信息
     * @return calorieLogInfo CalorieLogInfo 日志类
     */

    private static LogInfo buidLogInfo(FirebirdException e){
        LogInfo calorieLogInfo = new LogInfo();
        calorieLogInfo.setAccDate(DateUtils.getDate("yyyy-MM-dd HH:mm:ss"));
        calorieLogInfo.setInfoCode(e.getBizCode().getCode());
        calorieLogInfo.setInfoName(e.getBizCode().getName());
        calorieLogInfo.setInfoTitle(e.getLocalizedMessage());
        calorieLogInfo.setInfoDesc(ExceptionStackTraceBuilder.getValue(e));
        calorieLogInfo.setInfoUsrDesc(e.getCustomMessage());
        return calorieLogInfo;
    }


}
